<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Admin_controller extends CI_Controller {

	function __construct()
	{
		parent::__construct();
		
		$this->load->database();
		$this->load->helper('url');
		$this->load->model('admin_model');
		$this->load->library('grocery_CRUD');	
	}
	
	function _example_output($output = null)
	{
            
            
            //
            //if($this->admin_model->checklogin() == TRUE)
               // echo "abc";
            
            $this->load->view('admin_view/admin_view',$output);	
	}
	
    function abc()
    {
        $this->_example_output(
            (object)array(
                'output' => '' ,
                'js_files' => array() ,
                'css_files' => array()));
    }
        
    function index()
	{
                $this->login();
   	}
        
    function login()
    {
        if($this->session->userdata['user_data'] == "admin")  {
            $this->abc();
        }
        else{
            if(isset($_POST['username']) && $_POST['username']!="")
            {
                $username = $_POST['username']; 
                $password = $_POST['password'];
                if($this->admin_model->checklogin($username, $password) == TRUE)
                {
                    //$this->load->view('frontend/lecture');
                    $this->abc();
                    $data['user_data'] = "admin";
                    $data['admin'] = "true";
                    //$data['admin'] = $username;

                    $this->session->set_userdata($data);
                }
                else {
                    //echo 'Tên đăng nhập hoặc mật khẩu không chính xác';
                    echo "<script>";
                    echo "alert('Tên đăng nhập hoặc mật khẩu không chính xác');";
                    echo "</script>";
                     $this->load->view('admin_view/view_admin_login');
                }
                        
            }
            else
                $this->load->view('admin_view/view_admin_login');
        }
    }
    
    public function admin(){
        $this->load->view('admin_view/view_admin');   
    }

    public function logout(){
        $this->session->sess_destroy();
        //$data['admin'] = "";
        //$data['user'] = "";
        //$this->session->set_userdata($data);
        //$array_items = array('admin' => ' ', 'user_data' => ' ');
        //$this->session->unset_userdata($array_items);
        $this->load->view('admin_view/view_admin_login');
    }
    
    function article_management()
	{
        if($this->session->userdata['user_data'] == "admin")  {
		try{
			$crud = new grocery_CRUD();

			$crud->set_theme('datatables');
			$crud->set_table('article');
			$crud->set_subject('bài viết');
			$crud->required_fields('ID');
			$crud->columns(
                                'ID',
                                'NAME',
                                'CONTENT',
                                'CREAT_DATE',
                                'AUTHOR',
                                'TYPE_ID',
                                'TYPE_NAME');
			$crud->
                                display_as('ID','Mã')->
                                display_as('NAME','Tên bài viết')->
                                display_as('CONTENT','Nội dung bài viết')->
                                display_as('CREAT_DATE','Ngày tạo')->
                                display_as('AUTHOR','Tác giả')->
                                display_as('TYPE_ID','Mã loại')->
                                display_as('TYPE_NAME','Tên loại');
                        //callback
                        
			$output = $crud->render();
			
			$this->_example_output($output);
			
		}catch(Exception $e){
			show_error(
                                $e->getMessage().
                                ' --- '.
                                $e->getTraceAsString());
		}
        }
            else 
            {
                $this->load->view('admin_view/view_admin_login');
            }
	}
        
	function jskull_management()
	{
        if($this->session->userdata['user_data'] == "admin")  {
		try{
			$crud = new grocery_CRUD();

			$crud->set_theme('datatables');
			$crud->set_table('jskull');
			$crud->set_subject('trường');
			$crud->required_fields('ID');
			$crud->columns(
                                'ID',
                                'NAME',
                                'LINK',
                                'IMG',
                                'DESCRIPTION',
                                'TYPE',
                                'DATE_JOIN',
                                'TEACHER_CHARGE_NAME',
                                'TEACHER_CHARGE_EMAIL');
			$crud->
                                display_as('ID','Mã')->
                                display_as('NAME','Tên trường')->
                                display_as('LINK','Trang chủ')->
                                display_as('IMG','Phù hiệu')->
                                display_as('DESCRIPTION','Mô tả')->
                                display_as('TYPE','Loại trường')->
                                display_as('DATE_JOIN','Ngày tham gia')->
                                display_as('TEACHER_CHARGE_NAME','Giáo viên phụ trách')->
                                display_as('TEACHER_CHARGE_EMAIL','Email giáo viên phụ trách');
                        //callback
                        $crud->set_field_upload('IMG','images/');
                        
			$output = $crud->render();
			
			$this->_example_output($output);
			
		}catch(Exception $e){
			show_error(
                                $e->getMessage().
                                ' --- '.
                                $e->getTraceAsString());
		}
            }
            else 
            {
                $this->load->view('admin_view/view_admin_login');
            }
	}
 
   function course_management(){
        if($this->session->userdata['user_data'] == "admin")  {
		try{
			$crud = new grocery_CRUD();

			$crud->set_theme('datatables');
			$crud->set_table('course');
			$crud->set_subject('Khóa học');
			$crud->required_fields('course_id');
			$crud->columns(
                                'course_id',
                                'course_name',
                                'course_lecture_quan',
                                'course_level_release',
                                'course_id_of_lectures',
                                'course_img_path',
                                'course_txt_introduce',
                                'course_quan_users',
                                'course_lecturer_quan',
                                'course_id_of_lecturers');
			$crud->
                                display_as('course_id','Mã')->
                                display_as('course_name','Tên khóa học')->
                                display_as('course_lecture_quan','Số lượng bài giảng')->
                                display_as('course_level_release','Loại khóa học')->
                                display_as('course_id_of_lectures','Mã các bài giảng')->
                                display_as('course_img_path','Ảnh')->
                                display_as('course_txt_introduce','Giới thiệu')->
                                display_as('course_quan_users','Số người dùng')->
                                display_as('course_lecturer_quan','Số người giảng')->
                                display_as('course_id_of_lecturers','Mã người giảng');
                        //callback
                        $crud->field_type(
                                'TYPE_FILE',
                                'dropdown',
                                array(
                                    '1' => 'DOC',
                                    '2' => 'DOCX',
                                    '3' => 'PDF',
                                    '4' => 'PPT',
                                    '5' => 'PPTX'));
     
			$output = $crud->render();
			
			$this->_example_output($output);
			
		}catch(Exception $e){
			show_error(
                                $e->getMessage().
                                ' --- '.
                                $e->getTraceAsString());
		}
            }
            else 
            {
                $this->load->view('admin_view/view_admin_login');
            }
   } 
   
   function lecture_management()
	{
        if($this->session->userdata['user_data'] == "admin")  {
		try{
			$crud = new grocery_CRUD();

			$crud->set_theme('datatables');
			$crud->set_table('lecture');
			$crud->set_subject('bài giảng');
			$crud->required_fields('ID');
			$crud->columns(
                                'ID',
                                'LECTURE_NAME',
                                'COURSE_ID',
                                'LECTURER',
                                'CREATE_DATE',
                                'TYPE_FILE',
                                'PATH',
                                'LECTURE_ORDER');
			$crud->
                                display_as('ID','Mã')->
                                display_as('LECTURE_NAME','Tên bài giảng')->
                                display_as('COURSE_ID','Mã khoá học')->
                                display_as('LECTURER','Người giảng')->
                                display_as('CREATE_DATE','Ngày tạo')->
                                display_as('TYPE_FILE','Định dạng')->
                                display_as('PATH','Đường dẫn')->
                                display_as('LECTURE_ORDER','Thứ tự khoá học');
                        //callback
                        $crud->field_type(
                                'TYPE_FILE',
                                'dropdown',
                                array(
                                    '1' => 'DOC',
                                    '2' => 'DOCX',
                                    '3' => 'PDF',
                                    '4' => 'PPT',
                                    '5' => 'PPTX'));
     
			$output = $crud->render();
			
			$this->_example_output($output);
			
		}catch(Exception $e){
			show_error(
                                $e->getMessage().
                                ' --- '.
                                $e->getTraceAsString());
		}
            }
            else 
            {
                $this->load->view('admin_view/view_admin_login');
            }
	}
        
    function question_management()
	{
        if($this->session->userdata['user_data'] == "admin")  {
		try{
			$crud = new grocery_CRUD();

			$crud->set_theme('datatables');
			$crud->set_table('question');
			$crud->set_subject('câu hỏi');
			$crud->required_fields('ID');
			$crud->columns(
                                'ID',
                                'CONTENT',
                                'ANS_1',
                                'ANS_2',
                                'ANS_3',
                                'ANS_4',
                                'ANS_QUANT',
                                'CORRECT_ANS',
                                'TIME');
			$crud->
                                display_as('ID','Mã')->
                                display_as('CONTENT','Nội dung câu hỏi')->
                                display_as('ANS_1','Câu trả lời 1')->
                                display_as('ANS_2','Câu trả lời 2')->
                                display_as('ANS_3','Câu trả lời 3')->
                                display_as('ANS_4','Câu trả lời 4')->
                                display_as('ANS_QUANT','Số câu trả lời')->
                                display_as('CORRECT_ANS','Câu trả lời đúng')->
                                display_as('TIME','Thời gian');
                        //callback
                        
			$output = $crud->render();
			
			$this->_example_output($output);
			
		}catch(Exception $e){
			show_error(
                                $e->getMessage().
                                ' --- '.
                                $e->getTraceAsString());
		}
            }
            else 
            {
                $this->load->view('admin_view/view_admin_login');
            }
	}
        
    function slide_management()
	{
        if($this->session->userdata['user_data'] == "admin")  {
		try{
			$crud = new grocery_CRUD();

			$crud->set_theme('datatables');
			$crud->set_table('slide');
			$crud->set_subject('slide');
			$crud->required_fields('ID');
			$crud->columns(
                                'ID',
                                'VIDEO_ID',
                                'PATH',
                                'CREATER',
                                'CREATE_DATE',
                                'TYPEFILE');
			$crud->
                                display_as('ID','Mã')->
                                display_as('VIDEO_ID','Mã video')->
                                display_as('PATH','Đường dẫn')->
                                display_as('CREATER','Người tạo')->
                                display_as('CREATE_DATE','Ngày tạo')->
                                display_as('TYPEFILE','Định dạng');
                        //callback
                        $crud->field_type(
                                'TYPEFILE',
                                'dropdown',
                                array(
                                    '1' => 'DOC',
                                    '2' => 'DOCX',
                                    '3' => 'PDF',
                                    '4' => 'PPT',
                                    '5' => 'PPTX'));
                        
			$output = $crud->render();
			
			$this->_example_output($output);
			
		}catch(Exception $e){
			show_error(
                                $e->getMessage().
                                ' --- '.
                                $e->getTraceAsString());
		}
            }
            else 
            {
                $this->load->view('admin_view/view_admin_login');
            }
	}
        
    function test_management()
	{
        if($this->session->userdata['user_data'] == "admin")  {
		try{
			$crud = new grocery_CRUD();

			$crud->set_theme('datatables');
			$crud->set_table('test');
			$crud->set_subject('bài kiểm tra');
			$crud->required_fields('ID');
			$crud->columns(
                                'ID',
                                'CONTENT',
                                'QUANTITY_QUESTION',
                                'QUES_1',
                                'QUES_2',
                                'QUES_3',
                                'QUES_4',
                                'TIME');
			$crud->
                                display_as('ID','Mã')->
                                display_as('CONTENT','Nội dung kiểm tra')->
                                display_as('QUANTITY_QUESTION','Số câu hỏi')->
                                display_as('QUES_1','Câu hỏi 1')->
                                display_as('QUES_2','Câu hỏi 2')->
                                display_as('QUES_3','Câu hỏi 3')->
                                display_as('QUES_4','Câu hỏi 4')->
                                display_as('TIME','Thời gian');
                        //callback
                        
			$output = $crud->render();
			
			$this->_example_output($output);
			
		}catch(Exception $e){
			show_error(
                                $e->getMessage()
                                .' --- '.
                                $e->getTraceAsString());
		}
            }
            else 
            {
                $this->load->view('admin_view/view_admin_login');
            }
	}
        
    function user_management()
	{
        if($this->session->userdata['user_data'] == "admin")  {
		try{
			$crud = new grocery_CRUD();

			$crud->set_theme('datatables');
			$crud->set_table('user');
			$crud->set_subject('người dùng');
                        $crud->add_fields(
                                'NAME',
                                'FULLNAME',
                                'EMAIL',
                                'STATUS',
                                'PASSWORD',
                                'COURSE_QUAN',
                                'GENDER',
                                'YEAR_OF_BIRTH',
                                'CREATE_DATE',
                                'USER_ID_OF_COURSES');
			$crud->required_fields(
                                'NAME',
                                'FULLNAME',
                                'EMAIL',
                                'PASSWORD');
			$crud->columns(
                                'ID',
                                'NAME',
                                'FULLNAME',
                                'EMAIL',
                                'STATUS',
                                'PASSWORD',
                                'COURSE_QUAN',
                                'GENDER',
                                'YEAR_OF_BIRTH',
                                'CREATE_DATE',
                                'USER_ID_OF_COURSES');
			$crud->
                                display_as('ID','Mã')->
                                display_as('NAME','Tên đăng nhập')->
                                display_as('FULLNAME','Tên người dùng')->
                                display_as('EMAIL','E-mail')->
                                display_as('STATUS','Trạng thái')->
                                display_as('PASSWORD','Mật khẩu')->
                                display_as('COURSE_QUAN','Số khoá học đăng ký')->
                                display_as('GENDER','Giới tính')->
                                display_as('YEAR_OF_BIRTH','Ngày sinh')->
                                display_as('CREATE_DATE','Ngày đăng ký')->
                                display_as('USER_ID_OF_COURSES','Mã khóa học đã đăng ký');
                        
                        //callback
                        $crud->field_type(
                                'GENDER',
                                'dropdown',
                                array(
                                    '1' => 'Male',
                                    '2' => 'Female',
                                    '3' => 'Other'));
                        $crud->field_type('PASSWORD', 'password');
                        $crud->set_rules(
                                'EMAIL',
                                'Email',
                                'valid_email|required');
                        $crud->callback_before_insert(
                                array(
                                    $this,
                                    'get_valid_data'));
                        $crud->callback_before_update(
                                array(
                                    $this,
                                    'get_valid_data'));
                        
			$output = $crud->render();
			
			$this->_example_output($output);
			
		}catch(Exception $e){
			show_error(
                                $e->getMessage().
                                ' --- '.
                                $e->getTraceAsString());
		}
            }
            else 
            {
                $this->load->view('admin_view/view_admin_login');
            }
	}
        
        function get_valid_data($post_array)
        {
            $this->load->library('encrypt');
            
            $post_array['PASSWORD'] = 
                    $this->encrypt->sha1($post_array['PASSWORD']);
            $post_array['CREATE_DATE'] = date('Y-m-d H:i:s');
            
            return $post_array;
        }
        
    function video_fragment_management()
	{
        if($this->session->userdata['user_data'] == "admin")  {
		try{
			$crud = new grocery_CRUD();

			$crud->set_theme('datatables');
			$crud->set_table('video_fragment');
			$crud->set_subject('đoạn video');
			$crud->required_fields('ID');
			$crud->columns(
                                'ID',
                                'VIDEO_NAME',
                                'VIDEO_TYPE',
                                'COURSE_ID',
                                'LECTURER',
                                'CREATE_DATE',
                                'SIZE',
                                'CODEC',
                                'RUNTIME',
                                'LECTURE_ID',
                                'VIDEO_ORDER',
                                'LECTURE_ORDER',
                                'PATH',
                                'SLIDE_ID',
                                'VIEW');
			$crud->
                                display_as('ID','Mã')->
                                display_as('VIDEO_NAME','Tên video')->
                                display_as('VIDEO_TYPE','Định dạng')->
                                display_as('COURSE_ID','Mã khoá học')->
                                display_as('LECTURER','Người giảng')->
                                display_as('CREATE_DATE','Ngày tạo')->
                                display_as('SIZE','kích thước')->
                                display_as('CODEC','Chuẩn nén')->
                                display_as('RUNTIME','Môi trường')->
                                display_as('LECTURE_ID','Mã bài giảng')->
                                display_as('VIDEO_ORDER','Thứ tự theo video')->
                                display_as('LECTURE_ORDER','Thứ tự theo bài giảng')->
                                display_as('PATH','Đường dẫn')->
                                display_as('SLIDE_ID','Mã slide')->
                                display_as('VIEW','Lượt xem');
                        
                        
                        //callback
                        $crud->set_field_upload('PATH','video/');
                        
			$output = $crud->render();
			
			$this->_example_output($output);
			
		}catch(Exception $e){
			show_error(
                                $e->getMessage().
                                ' --- '.
                                $e->getTraceAsString());
		}
            }
            else 
            {
                $this->load->view('admin_view/view_admin_login');
            }
	}
    
    function add_new_course_to_unsigned_courses_list() {
        $course_code = 'EGO.G2';
        $course_id = 7;
        $table_name = $this->convert_grade_table_name($course_code);
        $this->admin_model->create_new_grade_table($table_name);
        $data = $this->admin_model->get_general_data();
        $data['course_quan']++;
        $j = $this->find_empty_pos_id_course_code($data['course_id']);
        //echo $j;
        $data['course_id'] = $this->insert_id_to_courses_code($data['course_id'], $j - 3, $course_id);
        $this->admin_model->update_general_data($data['course_quan'], $data['course_id']);
        
        $user = $this->admin_model->get_email_unregid_of_user();
        $i = 0;
        while (isset($user['user_email'][$i])) {
            $j =  $this->find_empty_pos_id_course_code($user['unreg_courses_id'][$i]);
            //echo $j."<br/>";
            $user['unreg_courses_id'][$i] = $this->insert_id_to_courses_code($user['unreg_courses_id'][$i], $j - 3, $course_id);
            $user['unreg_course_quan'][$i]++;
            $this->admin_model->update_unreg_courses_of_user($user['user_email'][$i], $user['unreg_course_quan'][$i], $user['unreg_courses_id'][$i]);
            $i++;
        }
        
    }
    
    function find_empty_pos_id_course_code($ids){
        $d1 = (int)$ids[0];
        $d2 = (int)$ids[1];
        $d3 = (int)$ids[2];
        $int_convert = $d1 * 100 + $d2 * 10 + $d3;
        //echo $int_id_course;
        $j = 3;
        //$i = 0;
        while ($int_convert != 0) {                    
            //$id_courses[$i] = $int_convert;
            //echo $id_courses[$i]."</br>";
            $d1 = (int)$ids[$j];
            $j++;
            $d2 = (int)$ids[$j];
            $j++;
            $d3 = (int)$ids[$j];
            $j++;
            $int_convert = $d1 * 100 + $d2 * 10 + $d3;
            //$i++;
        }
        return $j; 
    }
    
    function insert_id_to_courses_code($courses_code, $i, $id) {
        $str_id = (string) ($id);
        if ($id < 10) {
            $courses_code[$i] = 0;
            $courses_code[$i+1] = 0;
            $courses_code[$i+2] = $str_id[0];
        } else {
            if ($id < 100) {
                $courses_code[$i] = 0;                    
                $courses_code[$i+1] = $str_id[0];
                $courses_code[$i+2] = $str_id[1];
            } else {
                $courses_code[$i] = $str_id[0];
                $courses_code[$i+1] = $str_id[1];
                $courses_code[$i+2] = $str_id[2];
            }
        }
        return $courses_code;
    }
	
}